#include <stdio.h>

#if 1
/*传值*/

//交换两个变量的值
//函数无返回值
void Swap(int a, int b) //函数形参（它的值来自于实参没错，但仅限于值，只是简单的值传递）  
{
    int temp = a;
    a = b;
    b = temp;
    printf("Swap : a = %d b = %d\n", a, b); //函数内部是交换了的
}


int main()
{
    int a = 10;
    int b = 20;
    Swap(a, b); //实参：实参传给形参给的是变量的值
    printf("a = %d b = %d\n", a, b);    //这里打印可以发现并没有交换 可见传值是没有用的
    return 0;
    //所以如果一个函数想要交换两个变量的值，直接这样写是不行的，因为只是发生了内存的拷贝，实际上生效的只是Swap函数内部
    //恰好，访问变量（内存）也不是只有变量名一种，接下来引入指针
}
#endif

#if 0
/*传址*/

//函数无返回值
void Swap(int *a, int *b)    //函数形参   //交换两个变量的值
{
    int temp = *a;
    *a = *b;
    *b = temp;
    printf("Swap : a = %d b = %d\n", *a, *b);
}


int main()
{
    int a = 10;
    int b = 20;
    Swap(&a, &b); 
    printf("a = %d b = %d\n", a, b);
    return 0;
}
#endif